home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 95 / Amiga News 95.iso / dpat / dpat63 / pp_amigaguide / pp_amigaguide.c < prev    next >
C/C++ Source or Header  |  1994-05-06  |  4KB  |  135 lines

  1. /*
  2.  *                  PP_AmigaGuide v2.0
  3.  *                     © LFSoft 1994
  4.  *
  5.  *  Purpose: To read an AmigaGuide file crunched using PowerPacker.
  6.  *
  7.  *  History:
  8.  *  v?.?    30-09-1993  Seb. BOUCHEX.
  9.  *          First released version ( © S.BOUCHEX )
  10.  *
  11.  *  v2.0    05-03-1994  Laurent FAILLIE
  12.  *          Totaly rewriten source code but ShowAmigaGuideFile().
  13.  *          Add WorkBench support.
  14.  *
  15.  *  This release was developped and tested on an 68010, 6Mb, Amiga 1000, under
  16.  *  ks 37.210 & wb 38.35 (2.1). It was compiled w/ Dice v 2.07.54R and can be
  17.  *  made resident.
  18.  *
  19.  *  This software is a FreeWare product so you can use it as you want but no
  20.  *  part can be added or used in Commercial product without my written
  21.  *  permission (this include covers disks for magazins !). Also, permission
  22.  *  is granted for inclusion in all DP libraries ( AmigaLibDisk - Fred Fish -,
  23.  *  CAM, DPAF, ...
  24.  *
  25.  *  No warranty is assumed by myself or S.Bouchex. Use it at your own risk !
  26.  *
  27.  *          Laurent FAILLIE
  28.  *           "Les Vuardes"
  29.  *         74930  Pers-Jussy
  30.  *              FRANCE
  31.  */
  32.  
  33. /* Use PP, reqtools & AmigaGuide */
  34.     // Pour éviter que <proto/reqtools.h> ne le redefinisse
  35. #define ReqToolsBase_DECLARED
  36. struct ReqToolsBase *ReqToolsBase = (struct ReqToolsBase *)0L;
  37. #define U_AMIGAGUIDE
  38.  
  39. #include <LF.h> // My own include, include all header wanted for PP,RT & AG
  40. #include <proto/dos.h>
  41. #include <proto/exec.h>
  42. #include <stdio.h>
  43. #include <stdlib.h>
  44. #include <workbench/startup.h>
  45. #include <workbench/workbench.h>
  46.  
  47. struct Library *AmigaGuideBase=NULL;
  48.  
  49. void la_ferme( void ){
  50.     if (AmigaGuideBase) CloseLibrary(AmigaGuideBase);
  51.     if(ReqToolsBase)
  52.         CloseLibrary((struct Library *)ReqToolsBase);
  53. }
  54.  
  55. LONG ShowAmigaGuideFile (char *nom) {
  56.     struct NewAmigaGuide nag = {NULL};
  57.     AMIGAGUIDECONTEXT handle;
  58.     LONG retval = 0L;
  59.  
  60.     nag.nag_Name = nom;
  61.  
  62.     if ( handle = OpenAmigaGuide(&nag,NULL))
  63.         CloseAmigaGuide(handle);
  64.     else
  65.         retval = IoErr();
  66.  
  67.     return (retval);
  68. }
  69.  
  70. void loadAGfile( char *fch){
  71.     char *buffer;
  72.     long len;
  73.  
  74.     if ((AmigaGuideBase = (struct Library *)OpenLibrary ("amigaguide.library", 0L))==NULL){
  75.         puts ("can't open amigaguide.library ");
  76.         exit(25);
  77.     }
  78.  
  79.     if (!ppLoadData(fch,DECR_POINTER, 0L,&buffer,&len,NULL)){
  80.         char *tmp=tmpnam(NULL);
  81.         FILE *t;
  82.  
  83.         if(t=fopen(tmp,"w")){
  84.             fwrite(buffer,1,len,t);
  85.             fclose(t);
  86.             ShowAmigaGuideFile(tmp);
  87.             remove(tmp);
  88.         } else
  89.             rtEZRequest("Can't write temporary file", "OK",NULL,NULL);
  90.         FreeMem(buffer,len);
  91.     } else {
  92.         rtEZRequest("Can't read %s\n", "OK",NULL,NULL,fch);
  93.         exit(20);
  94.     }
  95. }
  96.  
  97. void main(int ac,char **av){
  98.     puts("pp_AmigaGuide v2.0 © LF Soft 1994\n"
  99.         " idea and first version from Sebastien BOUCHEX");
  100.  
  101.     if(ac != 2){
  102.         puts(" Syntaxe: pp_AmigaGuide <file.guide>");
  103.         exit(20);
  104.     }
  105.  
  106.     atexit(la_ferme);
  107.     if (!(ReqToolsBase=(struct ReqToolsBase *) OpenLibrary(REQTOOLSNAME,REQTOOLSVERSION))){
  108.         LFatal("Can't open ReqTools.library V38+");
  109.         exit(20);
  110.     }
  111.     loadAGfile(av[1]);
  112. }
  113.  
  114. void wbmain(struct WBStartup *wbarg){
  115.     atexit(la_ferme);
  116.     if (!(ReqToolsBase=(struct ReqToolsBase *) OpenLibrary(REQTOOLSNAME,REQTOOLSVERSION))){
  117.         LFatal("Can't open ReqTools.library V38+");
  118.         exit(20);
  119.     }
  120.  
  121.     if(wbarg->sm_NumArgs == 1){
  122.         rtEZRequest(" pp_AmigaGuide v2.0 © LFSoft 1994\n\n"
  123.                     "Display an cruncher AmigaGuide file.", "OK",NULL,NULL);
  124.     } else {
  125.         BPTR ocd=NULL;
  126.         int nbre;
  127.  
  128.         for(nbre = 1;nbre < wbarg->sm_NumArgs;nbre++){
  129.             ocd = CurrentDir(wbarg->sm_ArgList[nbre].wa_Lock);
  130.             loadAGfile(wbarg->sm_ArgList[nbre].wa_Name);
  131.             CurrentDir(ocd);
  132.         }
  133.     }
  134. }
  135.